home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
develop
/
libsrc11.arc
/
MULLUL.S
< prev
next >
Wrap
Text File
|
1989-04-27
|
1KB
|
71 lines
******************************************************************************
* mullul.s 3.1 11/12/84
*
* 68HC11 CROSS C COMPILER RUN-TIME LIBRARY
*
* (c) Copyright 1984, Motorola, Inc.
*
* FUNCTION NAME: .mullul
*
* ACTION: Calculate the product of two 16-bit integers
* yielding a 16-bit result.
*
* REGISTERS AND STACK:
*
* ON ENTRY: X: FP (frame pointer)
* D: Multiplicand
* Y: Multiplier
*
* STACK: Return Address
* SP:
*
* ON EXIT: X: FP
* D: Product
*
* STACK: Previous Contents
* SP:
*
* NOTES: DHI DLO
* x YHI YLO
* ----------
* DLOxYLO (P1)
* DHIxYLO (P2)
* DLOxYHI (P3)
* DHIxYHI (P4)
* ---------------
* RHI RLO (Result)
*
* RLO = P1LO
* RHI = P1HI + P2LO + P3LO
*
******************************************************************************
psct
xdef .mullul
.mullul:
pshx save FP
pshy save YLO YHI
pshb save DLO
psha save DHI
tsx use X to access args
ldaa 3,%x YLO
mul DLOxYLO
pshb save RLO (P1LO)
psha save RHI (P1HI)
ldab 0,%x DHI
ldaa 3,%x YLO
mul DHIxYLO
pula RHI
aba RHI + P2LO
psha save RHI
ldab 1,%x DLO
ldaa 2,%x YHI
mul DLOxYHI
pula RHI
aba RHI + P3LO
pulb RLO
pulx clean up...
pulx ..stack
pulx restore FP
rts return
end